package com.briup.bookstore.web.controller;

import com.briup.bookstore.common.model.entity.Category;
import com.briup.bookstore.common.model.param.PageParam;
import com.briup.bookstore.common.response.Result;
import com.briup.bookstore.service.CategoryService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/category")
@RequiredArgsConstructor
public class CategoryController {

    /**
     * 图书分类模块Service对象
     */
    private final CategoryService categoryService;

    /**
     * 查询全部图书分类信息
     * @return
     */
    @GetMapping
    public Result list() {
        return Result.ok(categoryService.list());
    }

    /**
     * 新增图书分类信息
     *
     * @param
     * @return
     */
    @PostMapping
    public Result add(@RequestBody Category categoryParam) {
        categoryService.add(categoryParam);
        return Result.ok();
    }

    /**
     * 分页+条件检索图书分类信息
     *
     * @param pageNum   当前页
     * @param pageSize  每页大小
     * @param name 分类名称（模糊匹配）
     * @return
     */
    @GetMapping(params = "page=true")
    public Result pageQuery(@RequestParam(value = "pageNum") int pageNum,
                            @RequestParam(value = "pageSize") int pageSize,
                            @RequestParam(value = "name", required = false) String name) {
        /* 封装分页参数 */
        PageParam pageParam = new PageParam()
                .pageNum(pageNum)
                .pageSize(pageSize);
        /* 封装查询条件参数 */
        Category categoryParam = new Category()
                // .setName(name);
        ;
        return Result.ok(categoryService.pageQueryByClause(pageParam, categoryParam));
    }


    /**
     * 删除图书分类信息
     * @param ids
     * @return
     */
    @DeleteMapping("/{ids}")
    public Result delete(@PathVariable("ids") List<Integer> ids) {
        categoryService.delete(ids);
        return Result.ok();
    }

    //
    // /**
    //  * 根据ID查询图书分类信息
    //  *
    //  * @param id
    //  * @return
    //  */
    // @GetMapping("/{id}")
    // public Result getById(@PathVariable("id") Integer id) {
    //     return Result.ok(categoryService.getById(id));
    // }
    //
    /**
     * 修改图书分类信息
     * @param categoryParam
     * @return
     */
    @PutMapping
    public Result update(@RequestBody Category categoryParam) {
        categoryService.update(categoryParam);
        return Result.ok();
    }

}
